/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import Classes.MateriaPrimaClass;
import Classes.ProdutoClass;
import Classes.ProdutoMateriaPrimaClass;
import java.util.List;
import javax.security.auth.login.Configuration;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

/**
 *
 * @author BRUNA
 */
public class MateriaPrimaDAO {
    private Session session;
    
    public MateriaPrimaDAO(){
            session = Util.HibernateUtil.getSessionFactory().openSession(); 
            }
    
    public void insert(MateriaPrimaClass mat){
        Transaction t = session.beginTransaction();
        session.save(mat);
        t.commit();
        }
    
    public void update(MateriaPrimaClass mat){
        Transaction t = session.beginTransaction();
        session.merge(mat);
        t.commit();
        }
    
    public void delete(MateriaPrimaClass mat){
        Transaction t = session.beginTransaction();
        session.delete(mat);
        t.commit();
        }
    
    //buscar uma matéria prima
    public MateriaPrimaClass findbyid(int id){
        return (MateriaPrimaClass)session.load(MateriaPrimaClass.class, id);
        }
    
    //Buscar todas as matérias primas
    public List<MateriaPrimaClass> findall(){
        Query qu = session.createQuery("From MateriaPrimaClass");
        return qu.list();
        }
    
    public List<MateriaPrimaClass>findAllMat(String mat){
        Query qu = session.createQuery("From MateriaPrimaClass where descricao like '%"+mat+"%'");
        return qu.list();
    }
    
    public List<ProdutoMateriaPrimaClass>findallCodProduto(int codigoProduto){
        Query qu = session.createQuery("From ProdutoMateriaPrimaClass where seq_Produto = "+codigoProduto);
        return qu.list();
    }
    
    public List<MateriaPrimaClass> findByHQL (String hql, List params){
        Query q = this.session.createQuery(hql);
        
        int i = 0;
        for (Object ps: params){
            q.setParameter(i++, ps);            
        }
        return q.list();
        
    }

    public void InsertMateriaprima(int id, String materiaprima, double quantidade) {
       
         Query qu = session.createQuery("Select id From MateriaPrimaClass where descricao = '"+materiaprima);
         int primaria = Integer.parseInt(qu.toString());
        
         
         
         
         
            String sql = "INSERT INTO ProdutoMateriaPrimaClass ";  
                    sql += " (quantidade, seq_MateriaPrima, seq_Produto) VALUES";  
                    sql += " ('"+quantidade+"','  "+  primaria +"  ','  "+ id +"  ')";  
  
            Query query = session.createSQLQuery(sql);  
  
            query.executeUpdate();  
  
           
        
        
    }


    
}
